﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Text.RegularExpressions;

namespace Helper
{
    public static class ValidateData
    {
        public static int CheckLogin { get; set; }
        /// <summary>
        /// Check value for user model
        /// </summary>
        /// <param name="Model"></param>
        /// <param name="_flag"></param>
        /// <returns></returns>
        public static string CheckNullUserModel(object Model, ref  bool _flag)
        {
            string html = "";

            Type typemodel = Model.GetType();
            PropertyInfo[] propertiesmodel = typemodel.GetProperties();
            for (int i = 0; i < propertiesmodel.Length; i++)
            {
                object propValue = propertiesmodel[i].GetValue(Model, null);
                if (propValue == null)
                {
                    if (propertiesmodel[i].Name == "UserName")
                    {
                        html += "<li>Vui lòng nhập tài khoản của bạn</li>";

                    }
                    if (propertiesmodel[i].Name == "PassWord")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập mật khẩu của bạn</li>";
                    }
                    if (propertiesmodel[i].Name == "Passwortemp")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập lại mật khẩu một lần nữa</li>";
                    }
                    if (propertiesmodel[i].Name == "Phone")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập số điện thoại của bạn/li>";
                    }
                    if (propertiesmodel[i].Name == "Address")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập địa chỉ của bạn </li>";
                    }
                    if (propertiesmodel[i].Name == "Email")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập email của bạn</li>";
                    }
                    if (propertiesmodel[i].Name == "FullName")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập đầu đủ họ tên của bạn</li>";
                    }
                }
                else
                {
                    string[] typeValue = propValue.GetType().ToString().Split('.');

                    if (typeValue[1].Equals("String"))
                    {
                        if (propValue == null || propValue.ToString() == string.Empty)
                        {

                            if (propertiesmodel[i].Name == "UserName")
                            {
                                _flag = true;
                                html += "<li>Vui lòng nhập tài khoản của bạn</li>";
                            }
                            if (propertiesmodel[i].Name == "PassWord")
                            {
                                _flag = true;
                                html += "<li>Vui lòng nhập mật khẩu của bạn</li>";
                            }
                            if (propertiesmodel[i].Name == "Passwortemp")
                            {
                                _flag = true;
                                html += "<li>Vui lòng nhập lại mật khẩu một lần nữa</li>";
                            }
                            if (propertiesmodel[i].Name == "Phone")
                            {
                                _flag = true;
                                html += "<li>Vui lòng nhập số điện thoại của bạn/li>";
                            }
                            if (propertiesmodel[i].Name == "Address")
                            {
                                _flag = true;
                                html += "<li>Vui lòng nhập địa chỉ của bạn </li>";
                            }
                            if (propertiesmodel[i].Name == "Email")
                            {
                                _flag = true;
                                html += "<li>Vui lòng nhập email của bạn</li>";
                            }
                            if (propertiesmodel[i].Name == "FullName")
                            {
                                _flag = true;
                                html += "<li>Vui lòng nhập đầu đủ họ tên của bạn</li>";
                            }

                        }
                        else
                        {
                            if (propertiesmodel[i].Name == "Phone")
                            {

                                if (CheckPhone(propValue.ToString()) == "kytukhongdu")
                                {
                                    _flag = true;
                                    html += "<li>Số điện thoại phải từ 9 ký tự trở lên</li>";
                                }
                                if (CheckPhone(propValue.ToString()) == "fail")
                                {
                                    _flag = true;
                                    html += "<li>Số điện thoại phải là số</li>";
                                }
                            }
                            if (propertiesmodel[i].Name == "Email")
                            {
                                if (CheckEmail(propValue.ToString()) == false)
                                {
                                    _flag = true;
                                    html += "<li>Email không đúng</li>";
                                }

                            }

                        }
                    }
                }
            }

            return html;
        }


        public static bool CheckEmail(string str)
        {
            Regex re = new Regex(@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$");
            if (re.IsMatch(str))
                return true;
            else
                return false;
        }

        public static string CheckPhone(string str)
        {
            if (str.Length < 9)
                return "kytukhongdu";
            Regex re = new Regex(@"^\d+$");
            if (re.IsMatch(str))
                return "ok";
            else
                return "fail";

        }
        public static string CheckUpdateFont(object Model, ref  bool _flag)
        {
            string html = "";

            Type typemodel = Model.GetType();
            PropertyInfo[] propertiesmodel = typemodel.GetProperties();
            for (int i = 0; i < propertiesmodel.Length; i++)
            {
                object propValue = propertiesmodel[i].GetValue(Model, null);
                if (propValue == null)
                {
                    if (propertiesmodel[i].Name == "UserName")
                    {
                        html += "<li>Vui lòng nhập tài khoản của bạn</li>";

                    }
                    if (propertiesmodel[i].Name == "Phone")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập số điện thoại của bạn/li>";
                    }
                    if (propertiesmodel[i].Name == "Address")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập địa chỉ của bạn </li>";
                    }
                    if (propertiesmodel[i].Name == "Email")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập email của bạn</li>";
                    }
                    if (propertiesmodel[i].Name == "FullName")
                    {
                        _flag = true;
                        html += "<li>Vui lòng nhập đầu đủ họ tên của bạn</li>";
                    }
                }

            } return html;
        }
    }
}
